package ifes;

import java.util.Arrays;
import java.util.List;

/*
 * Retorna que tipo é a voz de cada sentença de um texto.
 */
public class VozPassiva {

    public static void main(String[] args) {
        String[] arr_ser = {"sou", "és", "é", "somos", "sois", "são", "fui", "foste", "foi", "ficou", "fomos", "fostes", "foram", "era", "eras", "éramos", "éreis", "eram", "fora", "foras", "fôramos", "fôreis", "foram", "serei", "serás", "será", "seremos", "sereis", "serão", "seja", "sejas", "sejamos", "sejais", "sejam", "fosse", "fosses", "fôssemos", "fôsseis", "fossem", "for", "fores", "formos", "fordes", "forem", "ser", "seres", "sermos", "serdes", "serem", "seria", "serias", "seríamos", "seríeis", "seriam", "sê", "sejamos", "sede", "sejam", "sejas", "seja", "sejamos", "sejais", "sejam", "sendo", "sido"};
        String[] arr_participios = {"ada", "ado", "ida", "ido", "ante", "ente", "inte"};

        List<String> ls_ser = Arrays.asList(arr_ser);
        List<String> ls_participios = Arrays.asList(arr_participios);

        String texto = "A escola será pintada. O trabalho é feito por ele. A casa ficou cercada soldados. A exposição será aberta amanhã. Ele fez o trabalho. O trabalho foi feito por ele. Ele faz o trabalho. O trabalho é feito por ele. Ele fará o trabalho. O trabalho será feito por ele. O vento ia levando as folhas. As folhas iam sendo levadas pelo vento.";
        texto = texto.replace(".", " . ");

        String result_tagger[][] = Tagger.doTagger(texto);
        String[][] result = new String[result_tagger.length][2];
        for (int j = 0; j < result_tagger.length; j++) {

            List<String> tags = Arrays.asList(result_tagger[j][0].split(","));
            List<String> palavras = Arrays.asList(result_tagger[j][1].split(" "));

            result[j][0] = result_tagger[j][1].replace(" .", ".");
            result[j][1] = "ativa";
            boolean passiva = false;
            for (int i = 0; i < tags.size(); i++) {
                if (tags.get(i).contains("v")) {
                    /*
                     * MODO1
                     */
                    if (tags.get(i).contains("v-pcp")) {
                        if (i - 1 >= 0 && ls_ser.contains(palavras.get(i - 1))) {
                            passiva = true;
                        }
                    }
                    /*
                     * MODO2
                     */
                    if (!passiva) {
                        String radical = Stemmer.doStemmer(palavras.get(i));
                        for (String participio : ls_participios) {
                            if (palavras.get(i).equals(radical + participio)) {
                                if (i - 1 >= 0 && ls_ser.contains(palavras.get(i - 1))) {
                                    passiva = true;
                                    break;
                                }
                            }
                        }
                    }
                    if (passiva) {
                        result[j][1] = "passiva";
                        break;
                    }
                }
            }
        }


        for (int i = 0; i < result.length; i++) {
            System.out.println(result[i][0] + " - " + result[i][1]);
        }

    }
}
